package com.demo.java.OD551_600.OD551;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【需要打开多少监视器(B卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146532180
 */
public class OdMain {
    // 定义四个方向：上、下、左、右
    public static int[][] directions = {{-1, 0}, {1, 0}, {0, 1}, {0, -1}};

    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int m = in.nextInt(); // 停车场的行数
        int n = in.nextInt(); // 停车场的列数

        // 初始化停车场的状态
        int[][] matrix = new int[m][n];
        for (int i = 0; i < m; i++) {
            for (int j = 0; j < n; j++) {
                matrix[i][j] = in.nextInt(); // 读取停车场每个车位的状态
            }
        }

        // 需要开启的传感器数量
        int result = 0;

        // 遍历停车场的每个车位
        for (int x = 0; x < m; x++) {
            for (int y = 0; y < n; y++) {
                // 如果当前车位有车，直接跳过
                if (matrix[x][y] == 1) {
                    result++;
                    continue;
                }

                // 如果车位为空，检查其上下左右是否有车
                for (int i = 0; i < 4; i++) {
                    int new_x = x + directions[i][0]; // 上下左右的 x 坐标变化
                    int new_y = y + directions[i][1]; // 上下左右的 y 坐标变化

                    // 检查新位置是否在停车场内，并且是否有车
                    if (new_x >= 0 && new_x < m && new_y >= 0 && new_y < n && matrix[new_x][new_y] == 1) {
                        result++;  // 需要开启传感器
                        break;  // 找到一个相邻的车位有车，立即跳出内层循环
                    }
                }
            }
        }

        // 输出需要开启的传感器数量
        System.out.println(result);
    }
}